#pragma once

#include "iostream"
#include "vector"
#include "algorithm"
#include "TypeDefin.h"

using namespace std;
/*HJJ QQ479287006
 *输入一棵二叉树的根节点，求该树的深度。从根节点到叶节点依次经过的节点（含根、叶节点）形成树的一条路径，最长路径的长度为树的深度。

例如：

给定二叉树 [3,9,20,null,null,15,7]，

    3
   / \
  9  20
    /  \
   15   7
返回它的最大深度 3 。

 

来源：力扣（LeetCode）
链接：https://leetcode.cn/problems/er-cha-shu-de-shen-du-lcof
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 * */

//返回子树 的深度
//自底向上 DFS自顶向下
//返回树的 最大深度
//todo 非递归的考虑一下
int maxDepth(TreeNode *root) {
    if (!root)
        return 0;

    int left = maxDepth(root->left); //获取root ->left高度
    int right = maxDepth(root->right);//获取root ->right

    //这边要返回+1
    if (left > right)
        return left + 1; //加上root 高度 这个root 不一定是根哈 。因为一直在递归。

    return right + 1;

}